//package leetcode;
//
//import java.util.ArrayList;
//import java.util.List;
//
//class TreeNode {
//    int val;
//    TreeNode left;
//    TreeNode right;
//
//    public TreeNode(int val) {
//        this.val = val;
//    }
//
//    public TreeNode(int val, TreeNode left, TreeNode right) {
//        this.val = val;
//        this.left = left;
//        this.right = right;
//    }
//}
//
//class Solution {
//    public List<String> binaryTreePaths(TreeNode root) {
//        List<String> paths = new ArrayList<>();
//        constructPaths(root, "", paths);
//        return paths;
//    }
//
//    private void constructPaths(TreeNode root, String path, List<String> paths) {
//        if (root != null) {
//            StringBuffer pathSB = new StringBuffer(path);
//            pathSB.append(Integer.toString(root.val));
//            if (root.left == null && root.right == null) {
//                paths.add(pathSB.toString());
//            } else {
//                pathSB.append("->");
//                constructPaths(root.left, pathSB.toString(), paths);
//                constructPaths(root.right, pathSB.toString(), paths);
//            }
//        }
//    }
//}
//
//public class Test2 {
//}
